package nidea;

import java.sql.*;
import java.math.*;
/**
 * Clase empresa
 * @author Deskalsoft
 */
public class Empresa extends Usuario {

  
    private String nombre;    
    private String contacto;   
    private String dirEmpresa;   
    private int codPostal;   
    private String dirEmail;   
    private int telefono;   
    private int fax;   
    private BigInteger telCel;   
    private String sitioWeb;   
    private String descripcion;   
    private String confirmadoPor;  
    private String dirEmailConfirmado;   
    private String usuario;   
    private String contrasena;   
    private int idEmpresa;

  /**
   * CambiarEmpresa recive los datos de la empresa y los actualiza
   * @param usuario
   * @param nombre
   * @param contacto
   * @param dirempresa
   * @param codpostal
   * @param diremail
   * @param telefono
   * @param fax
   * @param telcel1
   * @param sitioweb
   * @param descripcion
   * @param confirmadopor
   * @param diremailconfirmado
   * @return String cadena= actualizado si se pudo actualizar, no se realizo camobio si no se pudo actualizar
   * o error si no se pudo conectar a la base 
   */
    public String cambiarEmpresa(String usuario, String nombre, String contacto, String dirempresa, int codpostal, String diremail, int telefono, int fax, BigInteger telcel1, String sitioweb, String descripcion, String confirmadopor, String diremailconfirmado) {
        String cadena = "actualizado";

        try {
            DBConexion cp = new DBConexion();
            ResultSet resultado = cp.getRS("SELECT nombre,contacto,dirempresa,codpostal,diremail,telefono,fax,telcel,sitioweb,descripcion,confirmadopor,diremailconfirmado FROM empresabd WHERE usuario='" +
                    usuario + "';");
            while (resultado.next()) {
                String compania = resultado.getString("nombre");
                String contactos = resultado.getString("contacto");
                String direccion = resultado.getString("dirempresa");
                int codigoPostal = resultado.getInt("codpostal");
                String correoElectronico = resultado.getString("diremail");
                int telefono1 = resultado.getInt("telefono");
                int fax1 = resultado.getInt("fax");
                BigInteger  celular1 =new BigInteger(resultado.getString("telcel"));
                String web = resultado.getString("sitioweb");
                String descripcion1 = resultado.getString("descripcion");
                String confirmadopor1 = resultado.getString("confirmadopor");
                String correoconfirmado1 = resultado.getString("diremailconfirmado");
                if (compania.equals(nombre) && contactos.equals(contacto) && direccion.equals(dirempresa) &&
                        codigoPostal == codpostal && correoElectronico.equals(diremail) &&
                        telefono1 == telefono && fax1 == fax && celular1 == telcel1 && web.equals(sitioweb) &&
                        descripcion1.equals(descripcion) && compania.equals(nombre) && confirmadopor1.equals(confirmadopor) &&
                        correoconfirmado1.equals(diremailconfirmado)) {
                    cadena = "No se realizo ningun cambio";
                }
            }

            String sql =
                    "UPDATE empresabd SET nombre='" + nombre + "',contacto='" + contacto + "',dirempresa='" + dirempresa + "',codpostal=" + codpostal + ",diremail='" + diremail + "',telefono=" + telefono + ",fax=" + fax + ",telcel=" + telcel1 + ",sitioweb='" + sitioweb + "',descripcion='" + descripcion + "',confirmadopor='" + confirmadopor + "',diremailconfirmado='" + diremailconfirmado + "'WHERE usuario='" + usuario + "';";
            cp.ExecutarSentencia(sql);

            cp.cerrarConexion();
        } catch (Exception e) {
            cadena = "Error de conexion,favor de intentar mas tarde. " + e;
        }
        return cadena;



    }

    /**
     * bajaEmpresa recive el identificador de la empreza borra su registro asi como problemas publicados e ideas aportadas
     * @param idempresa
     * @return String cadena=borrado si se pudo borrar el registro de la base de datos, error de conexion
     * o no se pudo realizar la accion segun sea el caso.
     */
    public String bajaEmpresa(int idempresa) {
        String cadena, usuar;
        try {
            cadena = "borrado";
            DBConexion cp = new DBConexion();
            String sql =
                    "DELETE FROM empresabd WHERE idempresa=" + idempresa + ";";
            cp.ExecutarSentencia(sql);
            ResultSet resultado = cp.getRS("SELECT usuario FROM empresabd where idempresa='" +
                    idempresa + "';");
            while (resultado.next()) {
                usuar = resultado.getString("usuario");
                cadena = "no se pudo realizar la accion intente mas tarde";
            }
            cp.cerrarConexion();
        } catch (Exception e) {
            cadena = "Error de conexion,favor de intentar mas tarde";
        }
        return cadena;
    }
    /**
     * ConsultarEmpresa recive un nombre de usuario y crea la cadena de consulta dependiendo del tipo de usuario
     * @param usuario
     * @return String consulta con la consulta de creativo o empresa segun sea el caso
     */
    public String consultarEmpresa(String usuario) {

        String consulta = ("SELECT idempresa, nombre,contacto,dirempresa,codpostal,diremail,telefono,fax,telcel,sitioweb,descripcion,confirmadopor,diremailconfirmado FROM empresabd WHERE usuario='" +
                usuario + "';");

        return consulta;
    }

   /**
    * altaEmpresa recibe los datos de una empresa y creas la cadena de insertar en la base de datos
    * @param idempresa
    * @param nombre
    * @param contacto
    * @param dirempresa
    * @param codpostal
    * @param diremail
    * @param telefono
    * @param fax
    * @param telcel1
    * @param sitioweb
    * @param descripcion
    * @param confirmadopor
    * @param diremailconfirmado
    * @param usuario
    * @param contrasena
    * @return String altaempresa con la cadena para agragar los datos a la base de datos
    */
    public String altaEmpresa(int idempresa, String nombre, String contacto, String dirempresa, int codpostal, String diremail, int telefono, int fax, BigInteger telcel1, String sitioweb, String descripcion, String confirmadopor, String diremailconfirmado, String usuario, String contrasena) {
        String altaempresa = "insert into EmpresaBD values (" + idempresa + ",'" + nombre + "','" + contacto + "','" + dirempresa + "'," + codpostal + ",'" + diremail + "'," + telefono + "," + fax + "," + telcel1 + ",'" + sitioweb + "','" + descripcion + "','" + confirmadopor + "','" + diremailconfirmado + "','" + usuario + "','" + contrasena + "');";
        return altaempresa;
    }
/**
 * indice busca un identificador disponible dentro de la base de datos
 * @return Int con el numero de identificador disponible
 */
    public int indice() {
        String error;
        int i = 1;
        try {
            DBConexion cp = new DBConexion();
            String sql = "SELECT idempresa FROM empresabd ORDER BY idempresa;";
            ResultSet resultado = cp.getRS(sql);
            while (resultado.next()) {
                if (i != resultado.getInt("idempresa")) {
                    return i;
                }
                i++;
            }
            cp.cerrarConexion();
        } catch (Exception e) {
            error = "Error de conexion,favor de intentar mas tarde";
        }
        return i;
    }
  /**
   * setNombre asigna valor al atributo nombre
   * @param nombre
   */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

   /**
    * getNombre regresa el valor del atributo nombre
    * @return nombre
    */
    public String getNombre() {
        return nombre;
    }

 /**
  * setContacto asigna valor al atributo contacto
  * @param contacto
  */
    public void setContacto(String contacto) {
        this.contacto = contacto;
    }

/**
 * getContacto regresa el valor del atributo contacto
 * @return contacto
 */
    public String getContacto() {
        return contacto;
    }

  /**
   * setDirEmpresa asigna un valor al atributo dirEmpresa.
   * @param dir
   */
    public void setDirEmpresa(String dir) {
        dirEmpresa = dir;
    }

    /**
     * getEmpresa regresa el valor del atributo dirEmpresa
     * @return dirEmpresa
     */
    public String getDirEmpresa() {
        return dirEmpresa;
    }

   /**
    * setCodPostal asigna valor al atributo codPostal
    * @param cod
    */
    public void setCodPostal(int cod) {
        codPostal = cod;
    }

    /**
     * getCodPostal regresa el valor del atributo codPostal
     * @return codPostal
     */
    public int getCodPostal() {
        return codPostal;
    }

  /**
   * setDirEmail asigna valor al atributo dirEmail
   * @param email
   */
    public void setDirEmail(String email) {
        dirEmail = email;
    }

    /**
     * getDirEmail regresa el valor del atributo dirEmail
     * @return dirEmail
     */
    public String getDirEmail() {
        return dirEmail;
    }

  /**
   * setTelefono asigna valora al atributo telefono
   * @param telefono
   */
    public void setTelefono(int telefono) {
        this.telefono = telefono;
    }

 /**
  * getTelefono regresa el valor del atributo telefono
  * @return telefono
  */
    public int getTelefono() {
        return telefono;
    }

  /**
   * setFax asigna valor al atributo fax
   * @param fax
   */
    public void setFax(int fax) {
        this.fax = fax;
    }

 /**
  * getFax regresa el valor del atributo fax
  * @return fax
  */
    public int getFax() {
        return fax;
    }

  /**
   * setTelCel asigna valor al atributto telCel
   * @param telCel
   */
    public void setTelCel(BigInteger telCel) {
        this.telCel = telCel;
    }

  /**
   * getTelCel regresa el valor del atributo telCel
   * @return telCel
   */
    public BigInteger getTelCel() {
        return telCel;
    }

  /**
   * setSitioWeb asigna valor al atributo sitioWeb
   * @param web
   */
    public void setSitioWeb(String web) {
        sitioWeb = web;
    }

/**
 * getSitioWeb regresa el valor del atributo sitioWeb
 * @return sitioWeb
 */
    public String getSitioWeb() {
        return sitioWeb;
    }

    /**
     * setDescripcion asigna un valor al atributo descripcion
     * @param descripcion
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

  /**
   * getDescripcion regresa el valor del atributo descripcion
   * @return descripcion
   */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * setConfirmadoPor asigna valor al atributo confirmado
     * @param confirmado
     */
    public void setConfirmadoPor(String confirmado) {
        confirmadoPor = confirmado;
    }


   /**
    * getConfirmadoPor regresa el valor del atributo confirmadoPor
    * @return confirmadoPor
    */
    public String getConfirmadoPor() {
        return confirmadoPor;
    }

    /**
     * setDirEmailConfirmado asingna un valor al atributo emailConfirmado
     * @param emailConfirmado
     */
    public void setDirEmailConfirmado(String emailConfirmado) {
        dirEmailConfirmado = emailConfirmado;
    }

  /**
   * getDirEmailConfirmado regresa el valor del atributo dirEmailConfirmado
   * @return dirEmailConfirmado
   */
    public String getDirEmailConfirmado() {
        return dirEmailConfirmado;
    }

  /**
   * setUsuario asigna un valor al atributo usuario
   * @param usuario
   */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    /**
     * getUsuario regresa el valor del atributo usuario
     * @return usuario
     */
    public String getUsuario() {
        return usuario;
    }

   /**
    * setContrasena asingna valor al atributo contrasena
    * @param contrasena
    */
    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }

 /**
  * getContrasena regresa el valor del atributo contrasena
  * @return contrasena
  */
    public String getContrasena() {
        return contrasena;
    }

   /**
    * setIdEmpresa asigna un valor al atributo idEmpresa
    * @param id
    */
    public void setIdEmpresa(int id) {
        idEmpresa = id;
    }

 /**
  * getIdEmpresa regresa el valor del atributo idEmpresa
  * @return idEmpresa
  */
    public int getIdEmpresa() {
        return idEmpresa;
    }
}

